package com.sz.biz.logistics.base.service;

import com.sz.biz.logistics.base.entity.Airport;
import com.sz.biz.logistics.base.dto.AirportDto;
import com.sz.biz.logistics.base.entity.Port;
import com.sz.common.base.dto.QueryParams;
import com.sz.common.base.dto.ResultDto;

import java.util.List;

/**
 * Function: AirportService <br>
 * Author: penghui.zheng <br>
 * Date: 2016-11-23 15:47:00
 */
public interface AirportService {

    void refreshCache();


    /**
     * 新增机场
     *
     * @param airportDto
     * @return int
     */
    int saveAirport(AirportDto airportDto);

    /**
     * 修改机场
     *
     * @param airportDto
     * @return int
     */
    int updateAirport(AirportDto airportDto);

    /**
     * 根据airportIds删除机场
     *
     * @param airportIds
     */
    void deleteByAirportIds(List<Integer> airportIds);

    /**
     * 根据机场areaId查询机场信息
     *
     * @param airportId
     * @return AirportDto
     */
    AirportDto findByAirportId(int airportId);
    /**
     * 根据机场Id查询机场短接口
     *
     * @param airportId
     * @return Airport
     */
    Airport findShortById(int id);
    List<Airport> findShortById(List<Integer> ids);
    /**
     * 根据机场areaIds查询机场信息s
     *
     * @param airportIds airportIds
     * @return List<AirportDto>
     */
    List<Airport> findByAirportIds(List<Integer> airportIds);

    /**
     * 根据条件分页查询机场
     *
     * @return ResultDto
     */
    ResultDto findAirportList(QueryParams params);

    /**
     * 查询国际化数据
     *
     * @param params
     * @return ResultDto
     */
    ResultDto findI18nByParam(QueryParams params);

    /**
     * @param name
     * @return @
     */
    void checkAirportName(String name);

    /**
     * @param triadCode
     * @return @
     */
    void checkTriadCode(String triadCode, int id);

    /**
     * @param tetradCode
     * @return @
     */
    void checkTetradCode(String tetradCode);
    
    /**
     * 机场下拉列表
     *
     * @return ResultDto
     */
    ResultDto shortAirportListPage(QueryParams params);
    /**
     * 根据国家和城市查询机场下拉列表
     *
     * @return ResultDto
     */
    ResultDto airportDropListPage(QueryParams params);

    /**
     * 根据三字码查询机场信息(精确匹配)
     * @param triadCode 三字码
     * @return 机场信息
     */
    Airport findAirPortByTriadCode(String triadCode,String countryCode);

    List<Airport> portFliter(String fromCountry, String fromProvince, String fromCity);
}
